package com.leetcode.demo15;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Solution {
    public List<List<Integer>> threeSum(int[] nums) {
        List<List<Integer>> res = new ArrayList<List<Integer>>();
        for (int i = 0; i < nums.length; i++) {
            for (int j = i + 1; j < nums.length; j++)
                for (int k = j + 1; k < nums.length; k++) {
                    if (nums[i] + nums[j] + nums[k] == 0) {
                        List<Integer> temp = new ArrayList<Integer>();
                        temp.add(nums[i]);
                        temp.add(nums[j]);
                        temp.add(nums[k]);
                        //判断结果中是否已经有 temp
                        if (isInList(res, temp)) {
                            continue;
                        }
                        res.add(temp);
                    }
                }
        }
        return res;

    }

    public boolean isInList(List<List<Integer>> l, List<Integer> a) {
        for (int i = 0; i < l.size(); i++) {
            //判断两个 List 是否相同
            if (isSame(l.get(i), a)) {
                return true;
            }
        }
        return false;
    }

    public boolean isSame(List<Integer> a, List<Integer> b) {
        int count = 0;
        Collections.sort(a);
        Collections.sort(b);
        //排序后判断每个元素是否对应相等
        for (int i = 0; i < a.size(); i++) {
            if (a.get(i) != b.get(i)) {
                return false;
            }
        }
        return true;
    }

}
